1. Field of the Invention
The present invention relates, in general, to distributing and provisioning software applications in a distributed computing environment and in networked computer systems, and, more particularly, to a method and corresponding system for reliably provisioning an operating system to numerous nodes or client devices in a networked computer system with reduced bandwidth requirements.
2. Relevant Background
The growth in computer networks and distributed computing environments has led to a parallel growth in the need for methods and services for managing the operation of hardware devices operating on such networks. For example, there has been a recent demand for improved techniques for loading or provisioning software onto devices, such as network nodes, client computing devices, and other electronic/computer devices, that are linked to a communication network, such as the Internet, an intranet, a local area network (LAN), a wide area net (WAN), or other network used to link computer devices. A new version of a software application may be developed, and it is desirable to reliably provision it or deliver and load it remotely to numerous devices (or “nodes”) over a communications to a network. The use of communication networks, such as the Internet and local intranets, has significantly improved the efficiency of provisioning new software versions and new software applications, but provisioning services and techniques have also created new problems and issues for network and computer system administrators.
The issue of how to provision a large application, such as an operating system (OS), has proven particularly difficult to resolve. Many computer systems may include a large number of nodes or devices that participate in a shared network and that at a particular time may require complete or individualized reloading of the operating system (OS) in a relatively quick manner to support a new configuration for the shared system. A common present practice for provisioning of an OS in such a computer system is to use a point-to-point network approach in which a separate copy of the OS is transmitted to each node. While effective for achieving provisioning especially where the images have high differentials, such a provisioning method, at scale, results in unacceptable network traffic congestion and also undesirably ties up the image server until provisioning of all nodes is completed.
Existing provisioning techniques may be labeled as unicast provisioning techniques in which the device or server providing the OS image talks directly with each receiving node or network device. OS files are often very large, and their size and complexity can make them difficult to send across networks without interruptions, without taking up large amounts of network bandwidth, and/or without interrupting other data being sent on the network. In such a conventional provisioning model, data packets (such as Internet Protocol (IP) packets) are sent using unicast or host-to-host transmission in which each computer involved in the provisioning can transmit and receive packets, which are labeled with the address of the receiving computer or node. Each computer or node listens to all the other packets that are sent in the network and looks for packets that contain its address. When a computer or node encounters a packet that is addressed to it, it interrupts the processor for processing.
Unicasting is useful for communicating directly with one or a few other computers, but when it is desirable to communicate with a large number of computers or nodes (such as is often the case in network provisioning), unicasting becomes very inefficient because a copy of each packet of a provisioned application or image must be sent to every receiving unicast address. Unicasting uses up network bandwidth quickly and particularly, when the file or application being transmitted is a large and/or complex file such as an OS file or image especially when there are large numbers of nodes that are simultaneously trying to accomplish similar tasks.
Due to these limitations with existing provisioning methods, there is a growing demand for more effective ways to achieve provisioning in a computer system having numerous computer devices or nodes that are communicatively linked by a communications network. Preferably, such a system and method would significantly reduce the amount of time and network bandwidth that is required for provisioning a software application and particularly for provisioning complex files such as an OS to a large number of nodes.